/**
 * Created by uf040339 on 2016/9/7.
 */

(function ($, global) {

    var paper,
        scaleX,
        scaleY,
        paperElmDict = {},
        line_name;

    var mem = {
        setItem: function (key, value) {
            if (global.localStorage) {
                localStorage.setItem(key, value);
            }
        },
        getItem: function (key) {
            if (global.localStorage) {
                return localStorage.getItem(key);
            }
            else {
                return null;
            }
        }
    };

    if (global.line_name) line_name = global.line_name;

    var lineStatus = {
        '0': '#ffffff', // no data
        '1': '#ff7e69', // operation fault
        '2': '#db3d60', // repair
        '3': '#808080', // outlet occupied
        '4': '#c0c0c0', // empty intake
        '5': '#ffff00', // switch off
        '6': '#ffc0cb', // rework
        '7': '#817eff', // quality check
        '8': '#7efffe', // mounting
        '9': '#fcff96', // miscellaneous
        '10': '#00ff00', // production
        '11': '#123553', // not assigned
        '12': '#ff0000' // system fault
    };

    var g6ShapeInfo = {
        'AFO600/1/001': {'x': 219, 'y': 313, 'width': 80, 'height': 46, 'value': 0, 'rotation': -50},
        'AFO600/1/002': {'x': 189, 'y': 255, 'width': 80, 'height': 46, 'value': 0, 'rotation': -5},
        'AFO600/1/003': {'x': 207, 'y': 192, 'width': 80, 'height': 46, 'value': 0, 'rotation': 40, 'ft1': 6},
        'AFO600/1/004': {
            'x': 267,
            'y': 162,
            'width': 80,
            'height': 46,
            'value': 0,
            'rotation': 85,
            'ft1': -16,
            'ft2': -20
        },
        'AFO600/1/005': {
            'x': 328,
            'y': 181,
            'width': 80,
            'height': 46,
            'value': 0,
            'rotation': 130,
            'ft1': 8,
            'fl1': 6,
            'ft2': 4
        },
        'AFO600/1/006': {
            'x': 355,
            'y': 240,
            'width': 80,
            'height': 46,
            'value': 0,
            'rotation': 175,
            'ft1': 8,
            'fl1': 6,
            'ft2': 4
        },
        'AFO600/1/0S1': {'x': 240, 'y': 405, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/1/001': {'x': 481, 'y': 365, 'width': 85, 'height': 46, 'value': 0},
        'AFO200/1/002': {'x': 481, 'y': 306, 'width': 85, 'height': 46, 'value': 0},
        'AFO200/1/003': {'x': 481, 'y': 247, 'width': 85, 'height': 46, 'value': 0},
        'AFO200/1/004': {'x': 481, 'y': 188, 'width': 85, 'height': 46, 'value': 0},
        'AFO200/1/005': {'x': 481, 'y': 129, 'width': 85, 'height': 46, 'value': 0},
        'AFO200/1/006': {'x': 481, 'y': 68, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/001': {'x': 614, 'y': 365, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/002': {'x': 715, 'y': 359, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/003': {'x': 614, 'y': 314, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/004': {'x': 715, 'y': 308, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/005': {'x': 614, 'y': 263, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/006': {'x': 715, 'y': 257, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/007': {'x': 664, 'y': 186, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/008': {'x': 664, 'y': 129, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/2/009': {'x': 614, 'y': 416, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/001': {'x': 828, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/002': {'x': 925, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/003': {'x': 828, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/004': {'x': 925, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/005': {'x': 828, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/006': {'x': 925, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/007': {'x': 828, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/008': {'x': 925, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/009': {'x': 828, 'y': 111, 'width': 85, 'height': 46, 'value': 0},
        'AFO160/1/0S1': {'x': 1025, 'y': 540, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO140/1/001': {'x': 1053, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/002': {'x': 1152, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/003': {'x': 1053, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/004': {'x': 1152, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/005': {'x': 1053, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/006': {'x': 1152, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/007': {'x': 1053, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/008': {'x': 1152, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO140/1/0S1': {'x': 1153, 'y': 668, 'width': 85, 'height': 40, 'value': 0},
        'AFO120/1/001': {'x': 1253, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/002': {'x': 1357, 'y': 352, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/003': {'x': 1253, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/004': {'x': 1357, 'y': 292, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/005': {'x': 1253, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/006': {'x': 1357, 'y': 232, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/007': {'x': 1253, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/008': {'x': 1357, 'y': 172, 'width': 85, 'height': 46, 'value': 0},
        'AFO560/1/0S1': {'x': 12, 'y': 431, 'width': 85, 'height': 46, 'value': 0},
        'AFO560/1/001': {'x': 12, 'y': 682, 'width': 70, 'height': 46, 'value': 0, 'ft1': 5, 'text1': 'AFO560/1\n/001'},
        'AFO560/1/003': {'x': 12, 'y': 542, 'width': 85, 'height': 46, 'value': 0},
        'AFO560/1/004': {'x': 12, 'y': 487, 'width': 85, 'height': 46, 'value': 0},
        'AFO320/1/001': {'x': 12, 'y': 872, 'width': 85, 'height': 46, 'value': 0},
        'AFO320/1/002': {'x': 12, 'y': 812, 'width': 85, 'height': 46, 'value': 0},
        'AFO320/1/003': {'x': 12, 'y': 752, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/1/001': {'x': 107, 'y': 649, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/1/002': {'x': 107, 'y': 700, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/1/003': {'x': 107, 'y': 749, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/1/004': {'x': 107, 'y': 800, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/2/001': {'x': 197, 'y': 649, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/2/002': {'x': 197, 'y': 700, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/2/003': {'x': 197, 'y': 749, 'width': 85, 'height': 46, 'value': 0},
        'AFO520/2/004': {'x': 197, 'y': 800, 'width': 85, 'height': 46, 'value': 0},
        'AFO440/1/001': {'x': 290, 'y': 748, 'width': 85, 'height': 88, 'value': 0},
        'AFO420/1/001': {'x': 410, 'y': 668, 'width': 85, 'height': 46, 'value': 0},
        'AFO420/1/002': {'x': 410, 'y': 740, 'width': 85, 'height': 46, 'value': 0},
        'AFO420/1/003': {'x': 410, 'y': 812, 'width': 85, 'height': 46, 'value': 0},
        'AFO400/1/001': {'x': 518, 'y': 683, 'width': 85, 'height': 46, 'value': 0},
        'AFO400/1/002': {'x': 518, 'y': 775, 'width': 85, 'height': 46, 'value': 0},
        'AFO400/1/003': {'x': 518, 'y': 886, 'width': 85, 'height': 46, 'value': 0},
        'AFO410/1/001': {'x': 540, 'y': 950, 'width': 120, 'height': 36, 'value': 0},
        'AFO180/1/001': {'x': 752, 'y': 650, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/002': {'x': 657, 'y': 650, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/003': {'x': 752, 'y': 701, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/004': {'x': 657, 'y': 701, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/005': {'x': 752, 'y': 752, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/006': {'x': 657, 'y': 752, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/007': {'x': 702, 'y': 825, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/008': {'x': 702, 'y': 876, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/009': {'x': 657, 'y': 599, 'width': 85, 'height': 46, 'value': 0},
        'AFO180/1/0S1': {'x': 816, 'y': 475, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/001': {'x': 840, 'y': 590, 'width': 85, 'height': 46, 'value': 0},
        'AFO500/1/002': {'x': 840, 'y': 646, 'width': 85, 'height': 46, 'value': 0},
        'AFO500/1/003': {'x': 840, 'y': 702, 'width': 85, 'height': 46, 'value': 0},
        'AFO500/1/0S1': {'x': 875, 'y': 544, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/001': {'x': 879, 'y': 776, 'width': 81, 'height': 100, 'value': 0},
        'AFO130/1/001': {'x': 1253, 'y': 580, 'width': 85, 'height': 46, 'value': 0},
        'AFO130/1/002': {'x': 1253, 'y': 650, 'width': 85, 'height': 46, 'value': 0},
        'AFO120/1/0S1': {'x': 1373, 'y': 525, 'width': 85, 'height': 46, 'value': 0},
        'AFO080/1/001': {'x': 1365, 'y': 645, 'width': 85, 'height': 46, 'value': 0},
        'AFO010/1/0S1': {'x': 1373, 'y': 794, 'width': 85, 'height': 46, 'value': 0},
        'AFO010/1/0C1': {'x': 1373, 'y': 886, 'width': 85, 'height': 46, 'value': 0}
    };

    var z6ShapeInfo = {
        'AFO100/1/001': {'x': 1125, 'y': 890, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/002': {'x': 1125, 'y': 840, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/003': {'x': 1125, 'y': 795, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/004': {'x': 1125, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/005': {'x': 1125, 'y': 705, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/006': {'x': 1125, 'y': 660, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/1/007': {'x': 1132, 'y': 597, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/002': {'x': 1034, 'y': 840, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/003': {'x': 1034, 'y': 795, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/004': {'x': 1034, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/005': {'x': 1034, 'y': 705, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/006': {'x': 1034, 'y': 660, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO100/2/007': {'x': 1034, 'y': 600, 'width': 70, 'height': 44, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO140/1/001': {'x': 980, 'y': 550, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO140/2/001': {'x': 980, 'y': 494, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO145/1/001': {'x': 495, 'y': 90, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO200/1/001': {'x': 935, 'y': 665, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/1/002': {'x': 935, 'y': 718, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/1/003': {'x': 935, 'y': 772, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/1/004': {'x': 935, 'y': 825, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/1/005': {'x': 935, 'y': 875, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/2/001': {'x': 846, 'y': 665, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/2/002': {'x': 846, 'y': 718, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/2/003': {'x': 846, 'y': 772, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/2/004': {'x': 846, 'y': 825, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO200/2/005': {'x': -846, 'y': -875, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO240/1/001': {
            'x': 1140,
            'y': 164,
            'width': 60,
            'height': 81,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'ft1': 5,
            'text1': 'AFO240/1\n/001'
        },
        'AFO240/1/002': {
            'x': 1060,
            'y': 60,
            'width': 60,
            'height': 97,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'ft1': 5,
            'text1': 'AFO240/1\n/002'
        },
        'AFO245/1/001': {'x': 1055, 'y': 292, 'width': 85, 'height': 50, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO300/1/001': {'x': 771, 'y': 656, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/002': {'x': 695, 'y': 656, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/003': {'x': 771, 'y': 711, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/004': {'x': 695, 'y': 711, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/005': {'x': 771, 'y': 764, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/006': {'x': 695, 'y': 764, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/007': {'x': 771, 'y': 839, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/1/008': {'x': 695, 'y': 839, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/2/001': {'x': 616, 'y': 675, 'width': 72, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/2/002': {'x': 616, 'y': 730, 'width': 72, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/2/003': {'x': 616, 'y': 783, 'width': 72, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/2/004': {'x': 616, 'y': 837, 'width': 72, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO300/2/005': {'x': 616, 'y': 893, 'width': 72, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/001': {'x': 447, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/002': {'x': 370, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/003': {'x': 447, 'y': 717, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/004': {'x': 370, 'y': 717, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/005': {'x': 447, 'y': 773, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/006': {'x': 370, 'y': 773, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/007': {'x': 447, 'y': 826, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/1/008': {'x': 370, 'y': 826, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/2/001': {'x': 528, 'y': 666, 'width': 75, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/2/002': {'x': 528, 'y': 720, 'width': 75, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO400/2/003': {'x': 528, 'y': 770, 'width': 75, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO420/1/001': {'x': 730, 'y': 36, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/1/002': {'x': 730, 'y': 66, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/1/003': {'x': 730, 'y': 96, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/1/004': {'x': 730, 'y': 126, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/2/001': {'x': 730, 'y': 156, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/2/002': {'x': 730, 'y': 186, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/2/003': {'x': 730, 'y': 216, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO420/2/004': {'x': 730, 'y': 246, 'width': 130, 'height': 25, 'value': 0, 'f1w': 600, 'f1s': 13, 'line': 1},
        'AFO425/1/001': {'x': 710, 'y': 360, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO440/1/001': {'x': 938, 'y': 280, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO440/1/002': {'x': 938, 'y': 330, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO440/1/003': {'x': 884, 'y': 173, 'width': 85, 'height': 47, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO440/1/004': {
            'x': 863,
            'y': 237,
            'width': 60,
            'height': 106,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'ft1': 5,
            'text1': 'AFO440/1\n/004'
        },
        'AFO440/1/005': {
            'x': 892,
            'y': 71,
            'width': 70,
            'height': 90,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'ft1': 5,
            'text1': 'AFO440/1\n/005'
        },
        'AFO500/1/001': {'x': 230, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/002': {'x': 154, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/003': {'x': 230, 'y': 706, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/004': {'x': 154, 'y': 706, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/005': {'x': 230, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/006': {'x': 154, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/007': {'x': 230, 'y': 794, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/1/008': {'x': 154, 'y': 794, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/001': {'x': 76, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/002': {'x': 0, 'y': 662, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/003': {'x': 76, 'y': 706, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/004': {'x': 0, 'y': 706, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/005': {'x': 76, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/006': {'x': 0, 'y': 750, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO500/2/008': {'x': 0, 'y': 794, 'width': 70, 'height': 40, 'value': 0, 'f1w': 600, 'f1s': 11},
        'AFO520/1/001': {
            'x': 197,
            'y': 71,
            'width': 64,
            'height': 80,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'ft1': 16,
            'text1': 'AFO520/1\n/001'
        },
        'AFO522/1/002': {'x': 60, 'y': 296, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO522/1/003': {'x': 60, 'y': 240, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO540/1/001': {'x': 318, 'y': 120, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO540/1/002': {'x': 365, 'y': 70, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO540/1/003': {'x': 275, 'y': 70, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO544/1/001': {'x': 8, 'y': 80, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO544/1/002': {'x': 8, 'y': 136, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO544/1/003': {'x': 8, 'y': 192, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO560/1/001': {'x': 181, 'y': 195, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO560/1/002': {'x': 181, 'y': 258, 'width': 85, 'height': 46, 'value': 0, 'f1w': 600, 'f1s': 13},
        'AFO600/1/001': {
            'x': 600,
            'y': 325,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': -60
        },
        'AFO600/1/002': {
            'x': 564,
            'y': 278,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': -15,
            'ft1': 4,
            'ft2': -4
        },
        'AFO600/1/003': {
            'x': 572,
            'y': 220,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 30,
            'ft1': 6,
            'ft2': -4
        },
        'AFO600/1/004': {
            'x': 618,
            'y': 184,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 75,
            'ft1': -12,
            'ft2': -20
        },
        'AFO600/1/005': {
            'x': 677,
            'y': 191,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 120,
            'ft1': 12,
            'ft2': 4
        },
        'AFO600/2/001': {
            'x': 356,
            'y': 373,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': -50,
            'ft1': 4
        },
        'AFO600/2/002': {
            'x': 321,
            'y': 334,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': -15,
            'ft1': 4
        },
        'AFO600/2/003': {
            'x': 328,
            'y': 274,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 30,
            'ft1': 6
        },
        'AFO600/2/004': {
            'x': 375,
            'y': 238,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 75,
            'ft1': -10,
            'ft2': -18
        },
        'AFO600/2/005': {
            'x': 434,
            'y': 246,
            'width': 70,
            'height': 46,
            'value': 0,
            'f1w': 600,
            'f1s': 13,
            'rotation': 120,
            'ft1': 10
        }
    };

    var g6ZoneMarkArr = {
        'AFO010': {'x': 1356, 'y': 860},
        'AFO080': {'x': 1430, 'y': 596},
        'AFO120': {'x': 1350, 'y': 90},
        'AFO130': {'x': 1275, 'y': 786},
        'AFO140': {'x': 1146, 'y': 90},
        'AFO160': {'x': 922, 'y': 90},
        'AFO180': {'x': 702, 'y': 90},
        'AFO200': {'x': 526, 'y': 30},
        'AFO300': {'x': 977, 'y': 958},
        'AFO320': {'x': 70, 'y': 970},
        'AFO400': {'x': 503, 'y': 940},
        'AFO410': {'x': 490, 'y': 980},
        'AFO420': {'x': 450, 'y': 925},
        'AFO440': {'x': 283, 'y': 957},
        'AFO500': {'x': 965, 'y': 596},
        'AFO520': {'x': 105, 'y': 618},
        'AFO560': {'x': 140, 'y': 516},
        'AFO600': {'x': 260, 'y': 80}
    };

    var z6ZoneMarkArr = {
        'AFO100': {'x': 1113, 'y': 960},
        'AFO140': {'x': 1020, 'y': 476},
        'AFO145': {'x': 543, 'y': 74},
        'AFO200': {'x': 920, 'y': 980},
        'AFO240': {'x': 1124, 'y': 25},
        'AFO245': {'x': 1200, 'y': 315},
        'AFO300': {'x': 730, 'y': 950},
        'AFO400': {'x': 480, 'y': 930},
        'AFO420': {'x': 780, 'y': 20},
        'AFO425': {'x': 773, 'y': 445},
        'AFO440': {'x': 1000, 'y': 250},
        'AFO500': {'x': 133, 'y': 886},
        'AFO520': {'x': 220, 'y': 50},
        'AFO522': {'x': 40, 'y': 360},
        'AFO540': {'x': 360, 'y': 56},
        'AFO544': {'x': 60, 'y': 30},
        'AFO560': {'x': 220, 'y': 330},
        'AFO600': {'x': 550, 'y': 386}
    };

    var shapeInfo, zoneMarkArr, refreshTimeHandle;

    if (line_name == 'Z6') {
        shapeInfo = z6ShapeInfo;
        zoneMarkArr = z6ZoneMarkArr;
    }
    else {
        shapeInfo = g6ShapeInfo;
        zoneMarkArr = g6ZoneMarkArr;
    }

    var refreshCurrentMessages = function () {
        var data = {
            rand: Date.now()
        };
        if (!line_name) {
            line_name = 'g6';
        }
        // var url = '/NEP/PSS/api/line_data';
        var url = '/static/data/' + line_name.toLocaleLowerCase() + '.json';
        $.get(url, data, function (resp) {
            $.each(resp, function (idx, val) {
                var obj = $.extend({}, shapeInfo[idx], val);
                drawLayerItem(idx, obj);
            });
        }, 'json');
    };

    var loopRefreshCurrentMessages = function () {
        clearInterval(refreshTimeHandle);
        refreshCurrentMessages();
        refreshTimeHandle = setInterval(function () {
            refreshCurrentMessages();
        }, 15000);
    };

    global.loopRefreshCurrentMessages = loopRefreshCurrentMessages();

    var initLayout = function () {
        //buildAllLayer(1500, 1000);
        if (paper) {
            try {
                setTimeout(function () {
                    paper.clear();
                }, 0);
            }
            catch (error) {
                console.log(error);
            }
        }
        var wt,
            ht;
        var th = setInterval(function () {
            var $img = $('.graphic-layer img');
            wt = $img.width();
            ht = $img.height();
            if (wt >= 0 && ht >= 0) {
                clearInterval(th);
                buildAllLayer(wt, ht);
                loopRefreshCurrentMessages();
            }
        }, 100);
    };

    // 修正canvas，没有完成初始化的情况
    // 如果刷新页面超过3次，则不继续刷新（防止手动缩放，连接刷新的情况）
    var reloadPage = function () {
        var reload_times = mem.getItem('reload_times');
        if (reload_times === undefined) {
            reload_times = 0;
        }
        if (reload_times < 3) {
            reload_times = reload_times + 1;
            global.location.reload();
        }
        else {
            reload_times = 0;
        }
        mem.setItem('reload_times', reload_times);
    };

    var buildAllLayer = function (wt, ht) {
        // 如果canvas的高度小于10，视为canvas初始化错误。
        // 但如canvas也有可能手动缩放到高度小于10。
        if (ht < 10) {
            reloadPage();
        }
        else {
            mem.setItem('reload_times', 0);
        }
        var imgWt = 1500;
        if (line_name == 'Z6') {
            imgWt = 1320
        }

        scaleX = wt / imgWt;
        scaleY = ht / 1000;

        if (paper == undefined) {
            paper = Raphael('canvasHolder', wt, ht);
        }
        else {
            paper.setSize(wt, ht);
        }

        $.each(shapeInfo, function (idx, val) {
            drawLayerItem(idx, val);
        });

        $.each(zoneMarkArr, function (idx, val) {
            drawZoneMark(idx, val);
        });

        //console.dir(paper);
        //paper.setSize(769, 512);
    };

    var drawZoneMark = function (idx, obj) {
        var textLineX = obj.x * scaleX,
            textLineY = obj.y * scaleY,
            ftSize = 16 * scaleX;

        var key = 'M_' + idx;

        if (paperElmDict[key]) {
            paperElmDict[key].mark.remove();
        }

        var tmp = {};

        tmp.mark = paper.text(textLineX, textLineY, idx).attr({
            //'text-anchor': 'start',
            'font-size': ftSize,
            'font-weight': 900
        });

        paperElmDict[key] = tmp;
    };

    var drawLayerItem = function (idx, obj) {
        var text1 = idx,
            text2 = obj.value;

        if (obj.flag > 0) {
            obj.fill = lineStatus[obj.flag];
        }
        else {
            obj.fill = lineStatus['0'];
        }

        if (paperElmDict[idx]) {
            paperElmDict[idx].shape.remove();
            paperElmDict[idx].text1.remove();
            paperElmDict[idx].text2.remove();
        }

        var tmp = {};

        if (obj.rotation) {
            var rX = obj.x - 0.5 * obj.width,
                rY = obj.y - 0.5 * obj.height,
                sWidth = obj.width * scaleX,
                sHeight = obj.height * scaleY;
            rX = rX * scaleX;
            rY = rY * scaleY;

            tmp.shape = paper.rect(rX, rY, sWidth, sHeight).attr({
                'fill': obj.fill,
                'stroke-width': 0,
                'opacity': .6,
                'title': obj.title
            });
            tmp.shape.rotate(obj.rotation).toBack();
        }
        else {
            var rX = obj.x,
                rY = obj.y,
                sWidth = obj.width * scaleX,
                sHeight = obj.height * scaleY;
            rX = rX * scaleX;
            rY = rY * scaleY;
            tmp.shape = paper.rect(rX, rY, sWidth, sHeight).attr({
                'fill': obj.fill,
                'stroke-width': 0,
                'opacity': .7,
                'title': obj.title
            });
        }

        var ftSize1 = (obj['f1s'] || 13) * scaleX,
            ftSize2 = 14 * scaleX;
        //var textLine1X = rX + 3 * scaleX,


        var textLine1X = rX;
        // 显示为一行
        if (obj['line'] == 1) {
            var textLine1Y = rY + 12 * scaleY,
                textLine2X = textLine1X + 95 * scaleX,
                textLine2Y = textLine1Y;
        }
        else {
            var textLine1Y = rY + 8 * scaleY,
                textLine2X = textLine1X,
                //textLine2Y = textLine1Y + 30 * scaleY;
                textLine2Y = textLine1Y + sHeight - ftSize2;
        }

        if (obj.ft1) {
            textLine1Y += obj.ft1 * scaleY;
        }
        if (obj.fl1) {
            textLine1X += obj.fl1 * scaleX;
        }

        if (obj.rotation) {
            textLine1X = textLine1X - 8 * scaleX;
            textLine1Y = textLine1Y + 5 * scaleY;
            textLine2X = textLine1X + (0.5 * obj.width) * scaleX;
        }

        if (obj.ft2) {
            textLine2Y += obj.ft2 * scaleY;
        }
        if (obj.fl2) {
            textLine2X += obj.fl2 * scaleX;
        }

        if (obj.text1) {
            text1 = obj.text1;
        }

        if (obj.text2) {
            text2 = obj.text2;
        }

        tmp.text1 = paper.text(textLine1X, textLine1Y, text1).attr({
            'text-anchor': 'start',
            'font-size': ftSize1,
            'font-weight': obj.f1w || 600
        });
        tmp.text2 = paper.text(textLine2X, textLine2Y, text2).attr({
            'text-anchor': 'start',
            'font-size': ftSize2,
            'font-weight': 900
        });

        paperElmDict[idx] = tmp;
    };

    $(function () {
        initLayout();
    });

    $(window).on('resize', function () {
        initLayout();
    });

})(jQuery, window);
